package com.example.service;

import com.example.info.SampleInfo;
import com.example.pojo.FilterOptionsSample;
import com.example.pojo.PageResult;
import com.example.pojo.Sample;

import java.util.Date;
import java.util.List;
import java.util.Map;

public interface SampleService {

    //分页查询数字样
    PageResult page(Integer page, Integer pageSize);

    //分页查询备选数字样
    PageResult pageb(Integer page, Integer pageSize);

    //分页查询设备源数字样
    PageResult pagem(Integer page, Integer pageSize);

    //分页查询正常图片
    PageResult pagen(Integer page, Integer pageSize);

    //删除数字样
    void deleteById(Integer sampleID);

    //修改备选数字样
    void update(Sample sample);

    //导入到下发数字样库
    void upload(Sample sample);


    //分页查询数字样并根据条件筛选
    //PageResult pageWithFilter(Integer page, Integer pageSize, String brandName, String defectName, String defectGrade);
    PageResult pageWithFilter(Integer page, Integer pageSize, List<String> brandName, List<String> defectName, List<String> defectGrade);

    //分页查询备选数字样并根据条件筛选
    PageResult pagebWithFilter(Integer page, Integer pageSize, List<String> brandName, List<String> defectName, List<String> defectGrade,List<Double> NPS);



    //向digitalsample表中插入数据
    void save(Sample sample);

    //向digitalsamplemachine表中插入数据
    void savem(Sample sample);

//    //从数字样库中获取所有不同的品牌名称、缺陷名称和缺陷等级
//    List<Map<String, Object>> getAllNames();
//    //从备选数字样库中获取所有不同的品牌名称、缺陷名称和缺陷等级
//    List<Map<String, Object>> getAllNamesb();

    //从数字样库中获取所有不同的品牌名称、缺陷名称和缺陷等级
    FilterOptionsSample getDistinctFilterOptions();
    //从备选数字样库中获取所有不同的品牌名称、缺陷名称、缺陷等级和推荐指数
    FilterOptionsSample getDistinctFilterOptionsb();

    //获取设备源图库所有不同品牌和缺陷类型
    FilterOptionsSample getDistinctFilterOptionsm();

    // 获取正常图片所有品牌名称
    FilterOptionsSample getDistinctFilterOptionsn();

//    PageResult pagemWithFilter(Integer page, Integer pageSize, List<String> machineIDs, List<String> brands,
//                               List<String> defects, Date start, Date end);
    PageResult pagemWithFilter(Integer page, Integer pageSize,
                               List<String> machineIDs,
                               List<String> brands,
                               List<String> defects,
                               Date start, Date end);
    PageResult pagenWithFilter(Integer page, Integer pageSize,
                               List<String> machineIDs,
                               List<String> brands,
                               Date start, Date end);
}
